/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.losalpes.marketplace.pical.beans;

import co.com.losalpes.marketplace.pical.bos.ComercioBO;
import co.com.losalpes.marketplace.pical.bos.FabricanteBO;
import co.com.losalpes.marketplace.pical.bos.CalificacionBO;
import co.com.losalpes.marketplace.pical.entities.Calificacion;
import co.com.losalpes.marketplace.pical.entities.persistence.Persistence;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Query;

/**
 *
 * @author leon
 */
public class CALBeanServer {

    /**
     * Se establece el estado de la calificacion en PENDIENTE
     *
     * @param cotizacionBO sin el numero
     * @return numero de la cotizacion
     */
    public String crearCalificacion(CalificacionBO calificacionBO) {
        String numero = "CAL" + System.currentTimeMillis();
        //calificacionBO.setNumero(numero);
        //calificacionBO.setEstado(Calificacion.E_PENDIENTE);
        //Calificacion calificacion = new Calificacion(calificacionBO);
        //this.getEm().persist(calificacion);
        return numero;
    }

    /**
     * Guarda una calificacion de un fabricante hacia un comercio *
     *
     * @param calificacionBO
     * @return
     */
    public boolean calificarFabricanteAComercio(CalificacionBO calificacionBO) {
        //Calificacion calificacion = this.getEm().find(Calificacion.class, calificacionBO.getNumero());
        //if (calificacion != null) {
        //    calificacion.setCal_comercio(calificacionBO.getCal_comercio());
        //    calificacion.setCom_comercio(calificacionBO.getCom_comercio());
        //    calificacion.setEstado(validarEstadoCalificacion(calificacion));
        //    this.getEm().merge(calificacion);
            return true;
        //}
        //return false;
    }





    /**
     * Guarda una calificacion de un comercio hacia un producto y el fabricante
     * ambas al tiempo
     *
     *
     * @param calificacionBO
     * @return
     */
    public boolean calificarComercioAProductoYFabricante(CalificacionBO calificacionBO) {
        //Calificacion calificacion = this.getEm().find(Calificacion.class, calificacionBO.getNumero());
        //if (calificacion != null) {
        //    calificacion.setCal_producto(calificacionBO.getCal_producto());
        //    calificacion.setCom_producto(calificacionBO.getCom_producto());
        //    calificacion.setCal_fabricante(calificacionBO.getCal_fabricante());
        //    calificacion.setCom_fabricante(calificacionBO.getCom_fabricante());
        //    calificacion.setEstado(validarEstadoCalificacion(calificacion));
        //    this.getEm().merge(calificacion);
            return true;
        //}
        //return false;
    }

    

    /**
     * Obtiene las calificaciones a realizar por un comercio o fabricante
     *
     * @param estado por defecto pendiente
     * @param nit del faricante o compercio
     * @return listado de calificaciones que puede realizar
     */
    public List<CalificacionBO> obtenerCalificaciones(String estado, String nit) {
        //uery q = this.getEm().createNamedQuery("obtenerCotizacionesFabricanteEstado");
        //q.setParameter("id_fabricante", nit); //TO STRING
        //q.setParameter("estado", estado);
        List<CalificacionBO> calificaciones = new ArrayList<CalificacionBO>();//(List<CalificacionBO>) q.getResultList();
        
        return calificaciones;
    }

    /**
     * Valida el estado de una calificacion;
     *
     * @param cal
     * @return
     */
    private String validarEstadoCalificacion(Calificacion cal) {
        if (cal.getCom_comercio() != null && cal.getCom_fabricante() != null && cal.getCom_producto() != null) {
            return Calificacion.E_TERMINADA;
        } else {
            return Calificacion.E_PENDIENTE;
        }
    }

    private Persistence getEm() {
        Persistence persistence = new Persistence();
        return persistence;
    }
}
